Fungsi boleh dipanggil dalam medan Variables blok atau terus dalam teks respons menggunakan #{...}:

#{discord_add_role(message_from, '1465674567090704592')}

ID pelayan, saluran, peranan dan mesej Discord adalah nilai angka yang panjang. Cara termudah untuk menyalinnya adalah dengan mendayakan Settings → Advanced → Developer Mode. Selepas itu, pilihan Copy ID akan muncul dalam menu konteks mana-mana objek.

Sambungan bot diterangkan dalam artikel How to Create a Chatbot in Discord.

Di Mana Mendapatkan ID Mesej

ID mesej yang mencetuskan blok disimpan dalam pembolehubah discord_message_id. Anda tidak perlu mendapatkannya secara berasingan:

#{discord_delete_message(discord_message_id)}

Jika anda memerlukan data yang tidak tersedia dalam pembolehubah yang telah ditetapkan, webhook penuh tersedia dalam pembolehubah discord_webhook. Ia diisi apabila sebarang nilai diberikan kepada pembolehubah save_webhook:

data = discord_webhook["data"]

msg_id = data["id"]

result = discord_reply_to_message(msg_id, "Ini adalah balasan kepada mesej")

Pembolehubah Dicipta Secara Automatik

Pembolehubah ini diisi secara automatik untuk setiap peristiwa dan tidak memerlukan sebarang konfigurasi tambahan.

Pembolehubah Penerangan Contoh
guild_id ID Pelayan 1465674567090704591
discord_event Jenis peristiwa sebagai satu perkataan message
discord_message_id ID Mesej dengan awalan mid mid1465674569095319625
message_from ID pengarang peristiwa dengan awalan uid uid413984787162726410
from_username Nama pengguna Discord pengarang 00rei
from_name Nama paparan pengarang dalam sembang Rus
username Nama pengguna untuk mesej terus kepada bot 00rei
is_bot 1 jika pengarang peristiwa adalah bot lain 0
nickname Nama panggilan pelayan; kosong jika tidak ditetapkan Moderator
roles Senarai ID peranan pengarang ["1465674567090704592"]
is_admin 1 jika pengguna adalah pentadbir atau pemilik pelayan 1
reply_from ID pengarang mesej yang dibalas uid493121376652230668
reply_from_username Nama pengguna pengarang yang dibalas _deikin
reply_from_name Nama paparan pengarang yang dibalas Rus
reply_to_bot 1 jika balasan adalah kepada bot 0
reply_message_id ID mesej yang dibalas mid1534837349219958804
reply_text Teks mesej yang dibalas siapa yang bertugas hari ini?

Awalan uid, cid, dan mid adalah sebahagian daripada nilai. Hantar pembolehubah ini kepada fungsi sebagaimana adanya; anda tidak perlu mengeluarkan awalan.

from_name vs. from_username

from_name mengandungi nama yang harus digunakan untuk menyapa pengguna dalam sembang:

  1. Nama panggilan pelayan, jika ditetapkan.
  2. Nama paparan akaun.
  3. Nama pengguna.

Ini adalah pembolehubah yang disyorkan untuk digunakan dalam ucapan kerana from_username mungkin kelihatan seperti _deikin atau 00rei.

Pembolehubah reply_* diisi hanya apabila mesej masuk adalah balasan kepada mesej lain. Untuk mesej biasa, kesemuanya dikosongkan.

Oleh itu, syarat berikut membezakan balasan daripada mesej biasa dengan pasti:

#{reply_from != ''}

Pembolehubah nickname, roles, dan is_admin merujuk kepada pengarang peristiwa semasa.

Discord tidak menyediakan data ini untuk peristiwa reaksi, jadi pemeriksaan pentadbir harus dilakukan pada peristiwa mesej atau arahan slash.

Teks mesej masuk disimpan dalam pembolehubah standard question, sama seperti saluran lain.


Peristiwa

Selain mesej biasa, peristiwa perkhidmatan juga dihantar ke corong.

Teksnya disimpan dalam pembolehubah question, jadi anda boleh mengendalikannya menggunakan syarat teks biasa.

discord_event Teks dalam question Bila Ia Berlaku
message Teks mesej Seorang ahli menghantar mesej
message_edit Teks mesej yang dikemas kini Mesej diedit
interaction /warn @user spam Arahan slash digunakan atau butang diklik
reaction_add new_like ❤️ uid413984787162726410 Reaksi ditambah
reaction_remove reaction_remove ❤️ uid413984787162726410 Reaksi dibuang
message_delete message_delete mid1465674569095319625 Mesej dipadam
messages_delete_bulk messages_delete_bulk 12 Berbilang mesej dipadam
member_join member_join uid413984787162726410 Seorang ahli menyertai pelayan
member_leave member_leave uid413984787162726410 Seorang ahli meninggalkan pelayan
member_update member_update uid413984787162726410 Nama panggilan atau peranan ahli berubah
member_ban member_ban uid413984787162726410 Seorang ahli diharamkan
member_unban member_unban uid413984787162726410 Seorang ahli dinyahharamkan

Untuk reaksi tersuai, ID emoji tersuai digunakan sebagai ganti emoji itu sendiri:

new_like beer:1479419477396291696 uid413984787162726410

Lihat bahagian Reactions untuk butiran.

Jika blok harus dicetuskan hanya untuk mesej biasa yang dihantar oleh ahli, tambah syarat berikut:

discord_event == 'message'

Ini menapis semua peristiwa perkhidmatan sekaligus.

Memeriksa hanya teks peristiwa adalah tidak boleh dipercayai kerana ahli boleh menghantar mesej secara manual seperti member_join.

Penting: member_update dicetuskan oleh sebarang kemas kini ahli, termasuk peranan yang diberikan oleh bot itu sendiri. Blok yang bertindak balas kepada member_update dan memberikan peranan boleh mencipta gelung, jadi syarat sedemikian harus sentiasa dihadkan dengan sewajarnya.


Mesej

Fungsi Penerangan
discord_send_message(channel_id, text) Hantar mesej ke mana-mana saluran
discord_send_dm(user_id, text) Hantar mesej terus kepada ahli
discord_reply_to_message(message_id, text) Balas kepada mesej
discord_edit_message(message_id, text) Edit mesej yang dihantar oleh bot
discord_delete_message(message_id) Padam mesej
discord_bulk_delete_messages(channel_id, message_ids) Padam berbilang mesej sekaligus
discord_get_message(channel_id, message_id) Dapatkan semula mesej
discord_pin_message(message_id) Semat mesej
discord_unpin_message(message_id) Nyahsemat mesej

Had Discord: Tiada had masa untuk mengedit atau memadam mesej anda sendiri. Pemadaman pukal hanya berfungsi untuk mesej yang berusia kurang daripada 14 hari, dan anda boleh memadam antara 2 hingga 100 mesej pada satu masa.


Reaksi

Fungsi Penerangan
discord_send_reaction(message_id, reaction) Tambah reaksi
discord_delete_reaction(message_id, reaction, user_id) Buang reaksi. Jika user_id ditinggalkan, reaksi bot dibuang

Parameter reaction menerima sama ada emoji biasa, seperti ❤️, atau ID emoji tersuai pelayan.

Di Mana Mendapatkan ID Reaksi Tersuai

Tambah reaksi tersuai yang diperlukan ke mana-mana mesej dalam saluran.

Panggil balik seperti ini akan muncul dalam sembang:

new_like beer:1479419477396291696 uid413984787162726410

Di sini:

beer:1479419477396291696

adalah ID reaksi.

Anda boleh menyalinnya dan menggunakannya dalam fungsi reaksi:

#{discord_send_reaction(discord_message_id, 'beer:1479419477396291696')}

Emoji biasa muncul dalam panggil balik sebagaimana adanya:

new_like ❤️ uid413984787162726410

di mana uid413984787162726410 adalah ID ahli yang menambah reaksi.


Moderasi

Fungsi Penerangan
discord_timeout_member(user_id, seconds) Tamatkan masa ahli untuk bilangan saat yang ditentukan, sehingga 28 hari
discord_remove_timeout(user_id) Buang tamat masa lebih awal
discord_kick_member(user_id) Tendang ahli dari pelayan; mereka boleh kembali menggunakan jemputan
discord_ban_member(user_id, delete_message_seconds) Haramkan ahli; hujah kedua menentukan berapa saat sejarah mesej yang akan dipadam, sehingga 7 hari
discord_unban_member(user_id) Nyahharamkan ahli

Discord tidak membenarkan bot untuk memoderasi ahli yang peranannya lebih tinggi daripada peranan bot. Pemilik pelayan juga tidak boleh dimoderasi.


Peranan dan Ahli

Fungsi Penerangan
discord_add_role(user_id, role_id) Berikan peranan
discord_remove_role(user_id, role_id) Buang peranan
discord_get_roles() Dapatkan peranan pelayan dan ID mereka
discord_get_member(user_id) Dapatkan data ahli, termasuk nama panggilan, peranan, dan tarikh menyertai
discord_set_nickname(user_id, nickname) Tukar nama panggilan pelayan ahli

Peranan bot mestilah lebih tinggi daripada peranan yang diberikannya.

Peranan @everyone dan peranan yang diuruskan oleh integrasi, termasuk peranan kepunyaan bot lain, tidak boleh diberikan.


Saluran dan Tiket

Fungsi Penerangan
discord_create_channel(name, type, parent_id, permission_overwrites) Cipta saluran
discord_delete_channel(channel_id) Padam saluran
discord_set_channel_permission(channel_id, target_id, allow, deny, type) Benarkan atau nafikan kebenaran saluran
discord_create_invite(channel_id, max_age, max_uses) Cipta pautan jemputan
discord_get_invites() Dapatkan pautan jemputan pelayan

Untuk discord_create_channel, type lalai adalah:

Nilai Jenis Saluran
0 Saluran teks
2 Saluran suara
4 Kategori

Anda boleh menghantar ID kategori dalam parent_id untuk mencipta saluran dalam kategori tersebut.

Untuk discord_set_channel_permission, hujah terakhir menentukan siapa yang menerima kebenaran:

Nilai Sasaran
1 Ahli
0 Peranan

Parameter allow dan deny menerima nilai berikut:

Nilai Kebenaran
1024 Lihat saluran
2048 Hantar mesej
3072 Lihat saluran dan hantar mesej
65536 Baca sejarah mesej

Untuk discord_create_invite, jangka hayat jemputan dinyatakan dalam saat.

Contohnya:

86400

bermaksud 24 jam.

Nilai max_uses sebanyak 0 bermaksud penggunaan tanpa had.


Arahan Slash

Fungsi Penerangan
discord_get_commands() Dapatkan arahan yang didaftarkan pada pelayan
discord_set_commands(commands) Gantikan keseluruhan set arahan

discord_set_commands menerima senarai arahan:

#{discord_set_commands('[
  {
    "name": "rules",
    "description": "Tunjukkan peraturan pelayan"
  },
  {
    "name": "warn",
    "description": "Keluarkan amaran",
    "options": [
      {
        "type": 6,
        "name": "user",
        "description": "Pengguna",
        "required": true
      },
      {
        "type": 3,
        "name": "reason",
        "description": "Sebab",
        "required": false
      }
    ]
  }
]')}

Keperluan Discord

  • name mesti mengandungi aksara huruf kecil sahaja, tanpa ruang, dan mestilah antara 1 hingga 32 aksara panjang.
  • description diperlukan dan mestilah antara 1 hingga 100 aksara panjang.
  • Pilihan yang diperlukan mesti muncul sebelum pilihan pilihan.
  • Menghantar senarai kosong mengeluarkan semua arahan bot dari pelayan.

Jenis Pilihan

Jenis Penerangan
3 Rentetan
4 Integer
5 Boolean
6 Ahli
7 Saluran
8 Peranan

Apabila arahan dipanggil, ia dihantar ke corong sebagai rentetan seperti:

/warn @user spam

Dengan kata lain, nama arahan dan nilai pilihan dipisahkan oleh ruang.

Anda boleh mengendalikannya menggunakan syarat teks biasa.

Fungsi berasingan untuk butang tidak diperlukan. Butang dikonfigurasikan dalam blok respons biasa, dan klik butang diterima dengan cara yang sama seperti arahan slash: nilai butang muncul dalam teks.


Mata dan Papan Pendahulu

Integrasi Discord merangkumi sistem penghargaan terbina dalam. Mata diberikan kepada pengarang mesej yang dipetik.

Anda boleh menggunakannya untuk membina tahap, pangkat, dan papan pendahulu.

Fungsi Penerangan
discord_add_thanks_score(value) Tambah mata kepada pengarang mesej yang dipetik
discord_add_thanks_score_for_answer(value) Tambah mata kepada ahli yang membalas
discord_minus_thanks_score(value) Buang mata
discord_get_score(user_id) Kembalikan mata ahli sebagai nombor. Tanpa hujah, gunakan pengarang acara
discord_get_level(user_id, points_per_level) Dapatkan tahap ahli. Ambang lalai: 100 mata setiap tahap
discord_get_user_info(user_id) Dapatkan mata, kedudukan papan pendahulu, dan nama sebagai satu objek
discord_get_top(count, shift, humanize, delimiter) Dapatkan papan pendahulu

Untuk discord_get_top:

  • count — bilangan baris untuk dikembalikan;
  • shift — bilangan baris untuk dilangkau, berguna untuk penomboran halaman;
  • humanize=true — mengembalikan teks sedia untuk dipaparkan;
  • delimiter — pemisah antara nama ahli dan mata.

Apabila membandingkan mata dalam syarat blok, gunakan discord_get_score. Fungsi ini mengembalikan nombor, jadi perbandingan berangka berfungsi seperti yang dijangka.


Contoh

Ucap Selamat Datang kepada Ahli Baru melalui Mesej Langsung

Syarat blok:

member_join

Dalam medan Pembolehubah:

discord_send_dm(
    message_from,
    'Hi, #{from_name}! Check out the pinned rules.'
)

Padam Mesej yang Mengandungi Perkataan Henti dan Masa Tamat Ahli selama 24 Jam

Syarat blok: senarai perkataan henti.

Syarat tambahan:

is_admin != 1

Fungsi:

discord_delete_message(discord_message_id)

discord_timeout_member(message_from, 86400)

Berikan Peranan untuk Reaksi terhadap Mesej Tertentu

Syarat blok:

new_like 🍕

Syarat tambahan:

contains(discord_message_id, '1534927170965602324')

Fungsi:

discord_add_role(
    message_from,
    '1465674567090704592'
)

Cipta Saluran Tiket Peribadi daripada Butang

ticket = discord_create_channel(
    'ticket-' + from_username
)

ticket_channel = get(
    get(ticket, 'data'),
    'id'
)

discord_set_channel_permission(
    ticket_channel,
    guild_id,
    None,
    1024,
    0
)

discord_set_channel_permission(
    ticket_channel,
    message_from,
    3072,
    None,
    1
)

discord_send_message(
    ticket_channel,
    'Describe your issue in a single message.'
)

Baris kebenaran pertama menyembunyikan saluran daripada semua orang (guild_id mewakili peranan @everyone di sini).

Baris kedua menjadikan saluran tersedia kepada ahli yang mencipta tiket.


Berikan Mata untuk Terima Kasih dan Berikan Peranan Berdasarkan Tahap

Syarat blok:

thanks;thx;thank you

Syarat tambahan:

reply_from != '' and reply_from != message_from and reply_to_bot != 1

Fungsi:

discord_add_thanks_score(1)

if (discord_get_level(reply_from) >= 1) {
    discord_add_role(
        reply_from,
        '1465674567090704592'
    )
}

Syarat:

reply_from != message_from

menghalang ahli daripada memberikan mata kepada diri sendiri.

Syarat:

reply_to_bot != 1

menghalang mata daripada diberikan kepada bot.


Tunjukkan Mata Anda dengan Arahan

Syarat blok:

/xp

Dalam medan Pembolehubah:

points = discord_get_score()

lvl = discord_get_level()

Teks respons:

#{from_name}, you have #{points} XP · Level #{lvl}

Tunjukkan Papan Pendahulu dengan Arahan

Syarat blok:

/top

Teks respons:

🏆 XP Leaderboard:

#{discord_get_top(10, 0, true, ' — ')}